#include <STC15F2K60S2.H>
#include <key.h>
#include <led.h>
#include <seg.h>
#include <ds1302.h>
#include <system.h>
#include <onewire.h>
#include <ultrasonic.h> //超声波测距底层
#include <Uart.h>		//串口底层驱动专用头文件
#include <stdio.h>
#include <nir.h>
#include <lcd1602.h>
#include <nir_send.h>


// 变量区
idata unsigned char i;
// 1.led
pdata unsigned char ucLed[] = {0, 0, 0, 0, 0, 0, 1, 1};
// 2.seg
idata unsigned char Seg_Pos;
pdata unsigned char Seg_Buf[] = {16, 16, 1, 16, 16, 16, 16, 16};
pdata unsigned char Seg_Point[] = {0, 0, 0, 0, 0, 0, 0, 0};

// seg显示模式
//idata unsigned char seg_mode = 0;	  // 表示显示模式：0-时间，1-温度  2-超声波....
//idata unsigned char seg_mode_cnt = 4; // 表示显示模式：0-时间，1-温度  2-超声波.... 3-显示红外编码

// 3.key
idata unsigned char Key_Val, Key_Down, Key_Up, Key_Old;
idata unsigned int Seg_Slow_Down, Key_Slow_Down;
// 4.时钟
//pdata unsigned char ucRtc[] = {23, 59, 55}; //{时，分，秒}
//bit flag;
//idata float wd; // 温度

// 5.超声波
idata int Wave_Data;

// 6.串口变量区
//idata unsigned char Uart_Slow_Down;	 // 串口减速专用变量
//pdata unsigned char Uart_Recv[20];	 // 串口接收数据储存数组 默认10个字节 若接收数据较长 可更改最大字节数
//idata unsigned char Uart_Recv_Index; // 串口接收数组指针
//pdata unsigned char Uart_Send[20];	 // 串口接收数据储存数组 默认10个字节 若发送数据较长 可更改最大字节数
//idata unsigned char dat;

// 7.红外遥控
//extern unsigned char ircode[4];

// 1.led
void led_proc()
{
	// led_display(ucLed);
}
// 2.seg
void seg_show()
{
			
}

void seg_proc()
{
 
	if (Seg_Slow_Down != 0)
		return;
	Seg_Slow_Down = 1;

	flag = !flag;

	switch (seg_mode)
	{
 
	case 0: 
		
		
		break;
	}
}
// 3.key
void key_proc()
{
	if (Key_Slow_Down)
		return;
	Key_Slow_Down = 1;

	Key_Val = keyRead();
	Key_Down = Key_Val & (Key_Val ^ Key_Old);
	Key_Up = ~Key_Val & (Key_Val ^ Key_Old);
	Key_Old = Key_Val;

	switch (Key_Down)
	{
		case 5:

		

			break;
		case 6:
		
			break;
		case 7:
			 
			break;
	
	}
}


void _Timer0_Init(void) // 1毫秒@12.000MHz
{
	AUXR &= 0x7F; // 定时器时钟12T模式
	TMOD &= 0xF0; // 设置定时器模式
	TL0 = 0x18;	  // 设置定时初始值
	TH0 = 0xFC;	  // 设置定时初始值
	TF0 = 0;	  // 清除TF0标志
	TR0 = 1;	  // 定时器0开始计时

	ET0 = 1; // 使能定时器0中断
	EA = 1;	 // 使能总中断
}


void service1() interrupt 1 //定时器3  12M
{
	if (++Key_Slow_Down == 10)
		Key_Slow_Down = 0;
	if (++Seg_Slow_Down == 500)
		Seg_Slow_Down = 0;


	// Read_Rtc(ucRtc);//读取时间

	led_display(ucLed);
	Seg_Pos++;
	if (Seg_Pos % 8 == 0)	Seg_Pos = 0;
	seg_display(Seg_Pos, Seg_Buf[Seg_Pos], Seg_Point[Seg_Pos]);
	
}


void main()
{
	system_init();
	_Timer0_Init();
	led_off();
    
	while (1)
	{
	    key_proc();
		led_proc();
		seg_proc();
		
	}
}